#pragma once
#include<stdio.h>
#include<stdlib.h>
#include<stdbool.h>
#include<assert.h>
typedef char BTDataType;
typedef struct TreeNode
{
	struct TreeNode* right;//指向左孩子
	struct TreeNode* left;//指向右孩子
	BTDataType val;//存放数据
}TreeNode;
//前序遍历
void PreOrder(TreeNode* root);
//中序遍历
void InOrder(TreeNode* root);
//后序遍历
void PostOrder(TreeNode* root);
//层序遍历
void LevelOrder(TreeNode* root);
//判断是否是完全二叉树
bool BinaryTreeComplete(TreeNode* root);
//二叉树的销毁
void BinaryTreeDestory(TreeNode* root);
//二叉树叶子结点个数
int  BinaryTreeLeafSize(TreeNode* root);
//二叉树结点个数
int  BinaryTreeSize(TreeNode* root);
//求第K层结点个数
int BinaryTreeLevelSize(TreeNode* root, int k);
//二叉树的高度/深度
int BinaryTreeDepth(TreeNode* root);
//查找值为x的结点
TreeNode* BinaryTreeFind(TreeNode* root, BTDataType x);